#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#define ElementType int
typedef struct{
    ElementType data;
    struct Node *lchild,*rchild;
}BiTNode,*BiTree;
//双亲表示法
#define MAX_SIZE 100
typedef struct{
    ElementType data;
    int parent;//双亲位置
}PTNode;
typedef struct{
    PTNode nodes[MAX_SIZE];//双亲表示
    int n;//结点数
}PTress;
//并查集
#define size 100
int UFSets[size];
int Find(int S[],int x){
    while(S[x]>=0)//循环找根
        x=S[x];
    return x;
}
void Union(int s[],int Root1,int Root2){
    s[Root2]=s[Root1];//Root2连接到Root1下面
}
void PreOrder(BiTree T){
    if(T!=NULL){
    cout << T->data;
    PreOrder(T->lchild);
    PreOrder(T->rchild);
    }
}
void PostOrder(BiTree T){
     if(T!=NULL){
    PreOrder(T->lchild);
    PreOrder(T->rchild);
    cout << T->data;
    }
}
void InOrder(BiTree T){
    if(T!=NULL){
    PreOrder(T->lchild);
    cout << T->data;
    PreOrder(T->rchild);
    }
}
void LevelOrder(BiTree T){
    InitQueue(Q);
    BiTree p;
    EnQueue(Q,T);
    while(!IsEmpty(Q)){
        OutQueue(Q,p);
        cout<<T->data;
        if(T->lchild!=NULL)
            LevelOrder(T->lchild);
        if(T->rchild!=NULL)
            LevelOrder(T->rchild);
    }
}